Hi,大家好,昨天我們處理了密碼檢核之機制,並預留了密碼逾期的頁面重導,強制使用者於密碼到期後進行密碼變更作業,今天要將變更密碼機制完成,以完成符合所謂的資訊安全的使用者管理,那麼讓我們開始吧。
密碼的強度確認,最簡單的作法是採用正規表示法(re)進行處理
chgpwd: async(uid, pwd)=>{
//取出資料庫中的使用者資料
let userinfo = await getUser(uid)
let pwds = []
if(userinfo.pwd === sha512Str(pwd)) {
throw new Error("新密碼不可與現有密碼相同,請更換密碼")
}
if(!userinfo.pwdslist) {
//第一次不檢查歷程直接放進去
pwds.push(userinfo.pwd)
} else {
pwds = JSON.parse(userinfo.pwdslist)
for(let i = 0; i < pwds.length; i++) {
if(pwds[i] === sha512Str(pwd)) {
throw new Error("密碼與前3代相同,請更換密碼")
}
}
if(pwds.length >= 3) {
//保留次數為3次以上,刪掉第0個
pwds.splice(0, 1)
}
pwds.push(userinfo.pwd)
}
userinfo.pwd = sha512Str(pwd)
userinfo.pwdslist = JSON.stringify(pwds)
//寫入資料庫
await saveData(userinfo)
},
說明:資料庫中以json 陣列型式紀錄前3次之密碼,驗證無誤後,清掉第一組後,加入變更前之密碼,以達到不可與前3次相同之機制,並在確次無誤後,存入資料庫
我們今天完成了變更密碼之機制,所以整個使用者登入的機制已經完成了,明天預計接續完成客服表單輸入之功能,那麼我們明天再繼續吧